package com.hsurosy.hsuchain.nft.user.infrastructure.util;

import cn.hutool.crypto.SecureUtil;
import cn.hutool.crypto.symmetric.AES;
import org.apache.commons.lang3.StringUtils;

import java.util.Base64;

/**
 * AES加解密工具类
 *
 * @Author Hsu琛君珩
 * @Date 2024-10-05 18:17
 * @Description
 * @Version: v1.0.0
 */
public class AesUtil {

    /**
     * AES加解密使用的密钥，使用Base64编码存储
     */
    private static String key = "uTfe6WtWICU/6rk0Gr7qKrAvHaRvQj+HRaHKvSe9UJI=";

    /**
     * Hutool库提供的AES加密对象，通过密钥进行初始化
     */
    private static AES aes = SecureUtil.aes(Base64.getDecoder().decode(key));

    /**
     * 对传入的字符串进行加密操作
     *
     * @param content 需要加密的字符串内容
     * @return 加密后的字符串，若输入为空，则返回原始内容
     */
    public static String encrypt(String content) {
        // 判空，若传入字符串为空或空白，直接返回
        if (StringUtils.isBlank(content)) {
            return content;
        }

        // 使用AES对象对字符串进行加密，返回16进制格式的加密结果
        return aes.encryptHex(content);
    }

    /**
     * 对传入的加密字符串进行解密操作
     *
     * @param content 需要解密的加密字符串
     * @return 解密后的字符串，若输入为空，则返回原始内容
     */
    public static String decrypt(String content) {
        // 判空，若传入字符串为空或空白，直接返回
        if (StringUtils.isBlank(content)) {
            return content;
        }

        // 使用AES对象对加密的字符串进行解密，返回解密后的明文
        return aes.decryptStr(content);
    }
}
